package com.haojin.java1;

import org.junit.Test;

import java.io.File;

/**
 * @author .29.
 * @create 2022-04-13 7:29
 */
/*
File类的使用

1.File类的一个对象，代表一个文件或一个文件目录(俗称：文件夹)
2.File类声明在java.io包下
3.File类中涉及到关于文件或文件目录的创建，删除，重命名，修改时间，文件大小等方法，
      并未涉及到写入或读取文件内容的操作，如果需要读取或写入文件内容，必须使用IO流完成
4.后去File类的对象，常会作为参数传递到流的构造器中，指明读取或写入的“终点”.
 */
public class FileTest {
    /*
    1.如何创建File类的实例
    File(String filePath)
    File(String parentPath,String chilePath)

    2.
    相对路径：相较于某个路径下，指明的路径
    绝对路径：包含盘符在内的文件或文件目录的路径

    3.路径分隔符：
    windows:\\
    unix:/
     */
    @Test
    public void test1(){
        //构造器1
        File file = new File("hello.txt");//相对于当前module
        File file1 = new File("C:\\Users\\10575\\workspace\\day06\\he.txt");

        System.out.println(file);
        System.out.println(file1);

        //构造器2
        File file2 = new File("C:\\Users","10575");
        System.out.println(file2);

        //构造器3
        File file3 = new File(file2,"workspace");
        System.out.println(file3);

    }
    /*
    public String getAbsolutePath()：获取绝对路径
    public String getPath():获取路径
    public String getName():获取名称
    public String getParent():获取上层文件目录路径，若无，返回null
    public long Length():获取文件长度（即：字节数）。不能获取目录长度。
    public long LastModified():获取最后一次修改时间，毫秒值
    //如下的两个方法适用于文件目录（遍历时要求文件真实存在）
    public String[] list():获取指定目录下所有文件或文件目录的名称数组
    public File[] listFiles():获取指定目录下的所有文件或文件目录的File数组
     */

    /*
    public boolean renameTo(File dest):把文件重命名为指定的文件路径
      比如：file1.renameTo(file2)为例：
        要想摆正返回true，需要file1在硬盘中存在，且file2不能在硬盘中存在
     */
    @Test
    public void test3(){
        File file1 = new File("hi.txt");
        File file2 = new File("D:\\study\\hello,txt");

        boolean rename = file1.renameTo(file2);
        System.out.println(rename);

    }

    /*
    public boolean isDirectory():判断是否是文件目录
    public boolean isFile():判断是否是文件
    public boolean exists():判断是否是存在
    public boolean canRead():判断是否是可读
    public boolean canWrite():判断是否是可写
    public boolean isHidden():判断是否是隐藏
     */


    /*
    创建硬盘中对应的文件或文件目录
    public boolean createNewFile():创建文件，如文件存在，则不创建，返回false
    public boolean mkdir():创建文件目录，如果此文件目录存在，则不创建。
                           如果此文件目录的上层目录不存在，也不创建。
    public boolean mkdirs():创建文件目录，如果上层文件目录不存在，一并创建

    File类的删除功能
    public boolean delete():删除文件或文件夹
    删除注意事项：
       Java中的删除不走 回收站 。
       要删除一个文件目录，请注意该文件目录不能包含文件或者文件目录
     */
}
